/*
 * dios.h
 *
 *  Created on: May 2, 2012
 *      Author: seba
 */

#ifndef DIOS_H_
#define DIOS_H_
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include "../lib/Logger.h"
#include "../lib/MonitorAscensores.h"
#include "../lib/MonitorPisos.h"
#include "../lib/ManejadorSemAscensores.h"
#include "../lib/ManejadorSemPisos.h"

using namespace std;

class Dios {

public:
	Dios(int cantidadPisos, int velocidadAsc, int capacidadAsc, int tiempo,
			int cantAsc, bool modoDebug, bool modoLog, bool modoSyn,
			bool modoCout);
	virtual ~Dios();

	int start();

private:
	int cantidadPisos;
	int cantidadAscensores;
	int velocidadAsc;
	int capacidadAsc;
	int tiempo;
	bool modoDebug;
	bool modoLog;
	bool modoSyn;
	bool modoCout;

	MonitorAscensores* mAscensores;
	MonitorPisos* mPisos;
	ManejadorSemPisos* sem_pisos;
	ManejadorSemAscensores* sem_asc;
	Logger* logger;

	void log(string message);

	void debug(string message);

	void sync(string message);
};

#endif /* DIOS_H_ */
